package com.study.spark.scala.chapter06

import com.study.spark.scala.test.ScalaUser

object Scala08_Object_Instance_4 {
  def main(args: Array[String]): Unit = {
    // 构造方法私有化：在参数列表前加private关键字
    // 声明一个公共的，静态的，返回本类型的方法，用于获取对象
    // Scala中没有静态语法，但是可以直接使用java中的静态操作
    // Scala中采用了一种特殊的处理方式代替静态：Object
    // object可以创建对象，对象的名字就是声明的名字
    // 这个对象等同于伴随这个类创建时所产生，所以这个对象叫伴生对象
    // 这个类称之为伴生类
    // 伴生对象就是一个对象，可以访问伴生类中所有的东西，包括私有的
    // 伴生对象是为了模拟java中静态语法所产生的
    // 写代码时，将静态语法写在伴生对象中，将成员方法写在伴生类中

    val person = Person.getInstance()
    println(person)

    // 由伴生对象访问
    ScalaUser.email//email: null
    // 由伴生类访问
    new ScalaUser().name//name: nul
  }


  // 伴生类
  class Person private (){

  }

  // 伴生对象
  object Person{
    def getInstance() : Person = {
      new Person()
    }
  }

}


